package com.managertrade.controller;

import com.managertrade.util.JwtUtil;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.http.HttpServletRequest;

/**
 * 所有 Controller 公共父类，用于获取当前登录用户信息
 */
public class BaseController {

    @Autowired
    protected HttpServletRequest request;
    /**
     * 获取当前登录用户的 token（去掉 Bearer 前缀）
     */
    protected String getToken() {
        String token = request.getHeader("Authorization");
        if (token != null && token.startsWith("Bearer ")) {
            return token.substring(7);
        }
        return token;
    }

    /**
     * 获取当前登录用户的 userId（token 中 subject 存的是用户ID）
     */
    protected Long getUserId() {
        String token = getToken();
        if (token == null) return null;
        Claims claims = JwtUtil.parseToken(token);  // 你自己的 JwtUtil 工具类
        Object userIdObj = claims.get("userId");

        if (userIdObj instanceof Number) {
            return ((Number) userIdObj).longValue();
        } else if (userIdObj instanceof String) {
            return Long.parseLong((String) userIdObj);
        } else {
            return null;
        }
    }

    /**
     * 获取当前登录用户名（如果 token 中有）
     */
    protected String getUsername() {
        String token = getToken();
        if (token == null) return null;
        Claims claims = JwtUtil.parseToken(token);
        return (String) claims.get("username");
    }
}
